﻿using Microsoft.AspNetCore.Mvc;
using SportsPlatform.Base;
using SportsPlatform.Dto.SportBusiness.CompetitionAchievementInfo;
using SportsPlatform.Query.SportBusiness.CompetitionAchievementInfo;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SportsPlatform.SportBusiness.ISportBusiness
{
    /// <summary>
    /// 赛事成绩信息表接口
    /// </summary>
    public interface ICompetitionAchievementInfoService
    {
        /// <summary>
        /// 新增赛事成绩信息
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<BaseResultDto> AddCompetitionAchievementInfo(AddCompetitionAchievementInfoQuery query);

        /// <summary>
        /// 赛事成绩信息同步
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<BaseResultDto> AchievementInfoSynchronization(List<AchievementInfoSynchronizationQuery> query);

        /// <summary>
        /// 更新赛事成绩信息
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<BaseResultDto> UpdateCompetitionAchievementInfo(UpdateCompetitionAchievementInfoQuery query);

        /// <summary>
        /// 分页获取场次赛事成绩信息
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<PagePagingDto<EventsSessionCompetitionAchievementInfoDto>> GetEventsSessionCompetitionAchievementInfo(GetEventsSessionCompetitionAchievementInfoPageQuery query);

        /// <summary>
        /// 下载分页获取场次赛事成绩信息Excel
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<ResultDto<DownloadEventsSessionCompetitionAchievementDto>> DownloadEventsSessionCompetitionAchievementExcel(GetEventsSessionCompetitionAchievementInfoPageQuery query);

        /// <summary>
        /// 下载分页获取场次赛事成绩信息pdf
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<ResultDto<DownloadEventsSessionCompetitionAchievementDto>> DownloadEventsSessionCompetitionAchievementPDF(GetEventsSessionCompetitionAchievementInfoPageQuery query);

        /// <summary>
        /// 分页获取赛事成绩信息
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<PagePagingDto<CompetitionAchievementInfoDto>> GetCompetitionAchievementInfo(GetCompetitionAchievementInfoQuery query);

        /// <summary>
        /// 获取场次赛事成绩信息详情
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<ResultDto<EventsSessionCompetitionAchievementInfoDetailsDto>> GetEventsSessionCompetitionAchievementInfoDetails(GetEventsSessionCompetitionAchievementInfoQuery query);

        /// <summary>
        /// 根据赛事ID获取赛事比赛项目Id和名称
        /// 用于查询条件下拉框
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<ResultListDto<GetCompetionProjectListByCompetionIdDto>> GetCompetionProjectListByCompetionId([FromBody] GetCompetionProjectListByCompetionIdQuery query);

    }
}
